home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Toolbox / Visual Basic Toolbox (P.I.E.)(1996).ISO / message / messag / message.ba_ / message.ba
Text File  |  1995-01-14  |  20KB  |  486 lines

  1. 'Message.VBX and MsgMore.DLL copyright ⌐ 1995 by Digital PowerTOOLS
  2.  
  3. 'message constants (numerical sequence by category) that you might want to use
  4. 'Function declarations are below
  5.  
  6. 'private window base message
  7. Global Const WM_USER = &H400
  8.  
  9. 'Button control messages
  10. Global Const BM_GETCHECK = WM_USER + 0
  11. Global Const BM_SETCHECK = WM_USER + 1
  12. Global Const BM_GETSTATE = WM_USER + 2
  13. Global Const BM_SETSTATE = WM_USER + 3
  14. Global Const BM_SETSTYLE = WM_USER + 4
  15.  
  16. 'Button notification codes
  17. Global Const BN_CLICKED = 0
  18. Global Const BN_PAINT = 1
  19. Global Const BN_HILITE = 2
  20. Global Const BN_UNHILITE = 3
  21. Global Const BN_DISABLE = 4
  22. Global Const BN_DOUBLECLICKED = 5
  23.  
  24. 'ComboBox messages
  25. Global Const CB_GETEDITSEL = (WM_USER + 0)
  26. Global Const CB_LIMITTEXT = (WM_USER + 1)
  27. Global Const CB_SETEDITSEL = (WM_USER + 2)
  28. Global Const CB_ADDSTRING = (WM_USER + 3)
  29. Global Const CB_DELETESTRING = (WM_USER + 4)
  30. Global Const CB_DIR = (WM_USER + 5)
  31. Global Const CB_GETCOUNT = (WM_USER + 6)
  32. Global Const CB_GETCURSEL = (WM_USER + 7)
  33. Global Const CB_GETLBTEXT = (WM_USER + 8)
  34. Global Const CB_GETLBTEXTLEN = (WM_USER + 9)
  35. Global Const CB_INSERTSTRING = (WM_USER + 10)
  36. Global Const CB_RESETCONTENT = (WM_USER + 11)
  37. Global Const CB_FINDSTRING = (WM_USER + 12)
  38. Global Const CB_SELECTSTRING = (WM_USER + 13)
  39. Global Const CB_SETCURSEL = (WM_USER + 14)
  40. Global Const CB_SHOWDROPDOWN = (WM_USER + 15)
  41. Global Const CB_GETITEMDATA = (WM_USER + 16)
  42. Global Const CB_SETITEMDATA = (WM_USER + 17)
  43. Global Const CB_GETDROPPEDCONTROLRECT = (WM_USER + 18)
  44. Global Const CB_SETITEMHEIGHT = (WM_USER + 19)
  45. Global Const CB_GETITEMHEIGHT = (WM_USER + 20)
  46. Global Const CB_SETEXTENDEDUI = (WM_USER + 21)
  47. Global Const CB_GETEXTENDEDUI = (WM_USER + 22)
  48. Global Const CB_GETDROPPEDSTATE = (WM_USER + 23)
  49. Global Const CB_FINDSTRINGEXACT = (WM_USER + 24)
  50.  
  51. 'ComboBox notification codes
  52. Global Const CBN_ERRSPACE = (-1)
  53. Global Const CBN_SELCHANGE = 1
  54. Global Const CBN_DBLCLK = 2
  55. Global Const CBN_SETFOCUS = 3
  56. Global Const CBN_KILLFOCUS = 4
  57. Global Const CBN_EDITCHANGE = 5
  58. Global Const CBN_EDITUPDATE = 6
  59. Global Const CBN_DROPDOWN = 7
  60. Global Const CBN_CLOSEUP = 8
  61. Global Const CBN_SELENDOK = 9
  62. Global Const CBN_SELENDCANCEL = 10
  63.  
  64. 'Edit control messages
  65. Global Const EM_GETSEL = WM_USER + 0
  66. Global Const EM_SETSEL = WM_USER + 1
  67. Global Const EM_GETRECT = WM_USER + 2
  68. Global Const EM_SETRECT = WM_USER + 3
  69. Global Const EM_SETRECTNP = WM_USER + 4
  70. Global Const EM_SCROLL = WM_USER + 5
  71. Global Const EM_LINESCROLL = WM_USER + 6
  72. Global Const EM_GETMODIFY = WM_USER + 8
  73. Global Const EM_SETMODIFY = WM_USER + 9
  74. Global Const EM_GETLINECOUNT = WM_USER + 10
  75. Global Const EM_LINEINDEX = WM_USER + 11
  76. Global Const EM_GETTHUMB = WM_USER + 14
  77. Global Const EM_LINELENGTH = WM_USER + 17
  78. Global Const EM_REPLACESEL = WM_USER + 18
  79. Global Const EM_SETFONT = WM_USER + 19
  80. Global Const EM_GETLINE = WM_USER + 20
  81. Global Const EM_LIMITTEXT = WM_USER + 21
  82. Global Const EM_CANUNDO = WM_USER + 22
  83. Global Const EM_UNDO = WM_USER + 23
  84. Global Const EM_FMTLINES = WM_USER + 24
  85. Global Const EM_LINEFROMCHAR = WM_USER + 25
  86. Global Const EM_SETWORDBREAK = WM_USER + 26
  87. Global Const EM_SETTABSTOPS = WM_USER + 27
  88. Global Const EM_SETPASSWORDCHAR = WM_USER + 28
  89. Global Const EM_EMPTYUNDOBUFFER = WM_USER + 29
  90. Global Const EM_MSGMAX = WM_USER + 30
  91. Global Const EM_GETFIRSTVISIBLELINE = (WM_USER + 30)
  92. Global Const EM_SETREADONLY = (WM_USER + 31)
  93. Global Const EM_SETWORDBREAKPROC = (WM_USER + 32)
  94. Global Const EM_GETWORDBREAKPROC = (WM_USER + 33)
  95. Global Const EM_GETPASSWORDCHAR = (WM_USER + 34)
  96.  
  97. 'Edit control notification codes
  98. Global Const EN_SETFOCUS = &H100
  99. Global Const EN_KILLFOCUS = &H200
  100. Global Const EN_CHANGE = &H300
  101. Global Const EN_UPDATE = &H400
  102. Global Const EN_ERRSPACE = &H500
  103. Global Const EN_MAXTEXT = &H501
  104. Global Const EN_HSCROLL = &H601
  105. Global Const EN_VSCROLL = &H602
  106.  
  107. 'ListBox messages
  108. Global Const LB_ADDSTRING = (WM_USER + 1)
  109. Global Const LB_INSERTSTRING = (WM_USER + 2)
  110. Global Const LB_DELETESTRING = (WM_USER + 3)
  111. Global Const LB_RESETCONTENT = (WM_USER + 5)
  112. Global Const LB_SETSEL = (WM_USER + 6)
  113. Global Const LB_SETCURSEL = (WM_USER + 7)
  114. Global Const LB_GETSEL = (WM_USER + 8)
  115. Global Const LB_GETCURSEL = (WM_USER + 9)
  116. Global Const LB_GETTEXT = (WM_USER + 10)
  117. Global Const LB_GETTEXTLEN = (WM_USER + 11)
  118. Global Const LB_GETCOUNT = (WM_USER + 12)
  119. Global Const LB_SELECTSTRING = (WM_USER + 13)
  120. Global Const LB_DIR = (WM_USER + 14)
  121. Global Const LB_GETTOPINDEX = (WM_USER + 15)
  122. Global Const LB_FINDSTRING = (WM_USER + 16)
  123. Global Const LB_GETSELCOUNT = (WM_USER + 17)
  124. Global Const LB_GETSELITEMS = (WM_USER + 18)
  125. Global Const LB_SETTABSTOPS = (WM_USER + 19)
  126. Global Const LB_GETHORIZONTALEXTENT = (WM_USER + 20)
  127. Global Const LB_SETHORIZONTALEXTENT = (WM_USER + 21)
  128. Global Const LB_SETCOLUMNWIDTH = (WM_USER + 22)
  129. Global Const LB_SETTOPINDEX = (WM_USER + 24)
  130. Global Const LB_GETITEMRECT = (WM_USER + 25)
  131. Global Const LB_GETITEMDATA = (WM_USER + 26)
  132. Global Const LB_SETITEMDATA = (WM_USER + 27)
  133. Global Const LB_SELITEMRANGE = (WM_USER + 28)
  134. Global Const LB_MSGMAX = (WM_USER + 33)
  135. Global Const LB_SETCARETINDEX = (WM_USER + 31)
  136. Global Const LB_GETCARETINDEX = (WM_USER + 32)
  137. Global Const LB_SETITEMHEIGHT = (WM_USER + 33)
  138. Global Const LB_GETITEMHEIGHT = (WM_USER + 34)
  139. Global Const LB_FINDSTRINGEXACT = (WM_USER + 35)
  140.  
  141. 'ListBox notification codes
  142. Global Const LBN_ERRSPACE = (-2)
  143. Global Const LBN_SELCHANGE = 1
  144. Global Const LBN_DBLCLK = 2
  145. Global Const LBN_SELCANCEL = 3
  146. Global Const LBN_SETFOCUS = 4
  147. Global Const LBN_KILLFOCUS = 5
  148.  
  149. 'Multimedia messages
  150. Global Const MM_JOY1MOVE = &H3A0
  151. Global Const MM_JOY2MOVE = &H3A1
  152. Global Const MM_JOY1ZMOVE = &H3A2
  153. Global Const MM_JOY2ZMOVE = &H3A3
  154. Global Const MM_JOY1BUTTONDOWN = &H3B5
  155. Global Const MM_JOY2BUTTONDOWN = &H3B6
  156. Global Const MM_JOY1BUTTONUP = &H3B7
  157. Global Const MM_JOY2BUTTONUP = &H3B8
  158. Global Const MM_MCINOTIFY = &H3B9
  159. Global Const MM_WOM_OPEN = &H3BB
  160. Global Const MM_WOM_CLOSE = &H3BC
  161. Global Const MM_WOM_DONE = &H3BD
  162. Global Const MM_WIM_OPEN = &H3BE
  163. Global Const MM_WIM_CLOSE = &H3BF
  164. Global Const MM_WIM_DATA = &H3C0
  165. Global Const MM_MIM_OPEN = &H3C1
  166. Global Const MM_MIM_CLOSE = &H3C2
  167. Global Const MM_MIM_DATA = &H3C3
  168. Global Const MM_MIM_LONGDATA = &H3C4
  169. Global Const MM_MIM_ERROR = &H3C5
  170. Global Const MM_MIM_LONGERROR = &H3C6
  171. Global Const MM_MOM_OPEN = &H3C7
  172. Global Const MM_MOM_CLOSE = &H3C8
  173. Global Const MM_MOM_DONE = &H3C9
  174.  
  175. 'Static messages
  176. Global Const STM_SETICON = (WM_USER + 0)
  177. Global Const STM_GETICON = (WM_USER + 1)
  178.  
  179. 'Window messages
  180. Global Const WM_NULL = &H0
  181. Global Const WM_CREATE = &H1
  182. Global Const WM_DESTROY = &H2
  183. Global Const WM_MOVE = &H3
  184. Global Const WM_SIZE = &H5
  185. Global Const WM_ACTIVATE = &H6
  186. Global Const WM_SETFOCUS = &H7
  187. Global Const WM_KILLFOCUS = &H8
  188. Global Const WM_ENABLE = &HA
  189. Global Const WM_SETREDRAW = &HB
  190. Global Const WM_SETTEXT = &HC
  191. Global Const WM_GETTEXT = &HD
  192. Global Const WM_GETTEXTLENGTH = &HE
  193. Global Const WM_PAINT = &HF
  194. Global Const WM_CLOSE = &H10
  195. Global Const WM_QUERYENDSESSION = &H11
  196. Global Const WM_QUIT = &H12
  197. Global Const WM_QUERYOPEN = &H13
  198. Global Const WM_ERASEBKGND = &H14
  199. Global Const WM_SYSCOLORCHANGE = &H15
  200. Global Const WM_ENDSESSION = &H16
  201. Global Const WM_SYSTEMERROR = &H17
  202. Global Const WM_SHOWWINDOW = &H18
  203. Global Const WM_CTLCOLOR = &H19
  204. Global Const WM_WININICHANGE = &H1A
  205. Global Const WM_DEVMODECHANGE = &H1B
  206. Global Const WM_ACTIVATEAPP = &H1C
  207. Global Const WM_FONTCHANGE = &H1D
  208. Global Const WM_TIMECHANGE = &H1E
  209. Global Const WM_CANCELMODE = &H1F
  210. Global Const WM_SETCURSOR = &H20
  211. Global Const WM_MOUSEACTIVATE = &H21
  212. Global Const WM_CHILDACTIVATE = &H22
  213. Global Const WM_QUEUESYNC = &H23
  214. Global Const WM_GETMINMAXINFO = &H24
  215. Global Const WM_PAINTICON = &H26
  216. Global Const WM_ICONERASEBKGND = &H27
  217. Global Const WM_NEXTDLGCTL = &H28
  218. Global Const WM_SPOOLERSTATUS = &H2A
  219. Global Const WM_DRAWITEM = &H2B
  220. Global Const WM_MEASUREITEM = &H2C
  221. Global Const WM_DELETEITEM = &H2D
  222. Global Const WM_VKEYTOITEM = &H2E
  223. Global Const WM_CHARTOITEM = &H2F
  224. Global Const WM_SETFONT = &H30
  225. Global Const WM_GETFONT = &H31
  226. Global Const WM_COMMNOTIFY = &H44
  227. Global Const WM_QUERYDRAGICON = &H37
  228. Global Const WM_COMPAREITEM = &H39
  229. Global Const WM_COMPACTING = &H41
  230. Global Const WM_WINDOWPOSCHANGING = &H46
  231. Global Const WM_WINDOWPOSCHANGED = &H47
  232. Global Const WM_POWER = &H48
  233. Global Const WM_NCCREATE = &H81
  234. Global Const WM_NCDESTROY = &H82
  235. Global Const WM_NCCALCSIZE = &H83
  236. Global Const WM_NCHITTEST = &H84
  237. Global Const WM_NCPAINT = &H85
  238. Global Const WM_NCACTIVATE = &H86
  239. Global Const WM_GETDLGCODE = &H87
  240. Global Const WM_NCMOUSEMOVE = &HA0
  241. Global Const WM_NCLBUTTONDOWN = &HA1
  242. Global Const WM_NCLBUTTONUP = &HA2
  243. Global Const WM_NCLBUTTONDBLCLK = &HA3
  244. Global Const WM_NCRBUTTONDOWN = &HA4
  245. Global Const WM_NCRBUTTONUP = &HA5
  246. Global Const WM_NCRBUTTONDBLCLK = &HA6
  247. Global Const WM_NCMBUTTONDOWN = &HA7
  248. Global Const WM_NCMBUTTONUP = &HA8
  249. Global Const WM_NCMBUTTONDBLCLK = &HA9
  250. Global Const WM_KEYFIRST = &H100
  251. Global Const WM_KEYDOWN = &H100
  252. Global Const WM_KEYUP = &H101
  253. Global Const WM_CHAR = &H102
  254. Global Const WM_DEADCHAR = &H103
  255. Global Const WM_SYSKEYDOWN = &H104
  256. Global Const WM_SYSKEYUP = &H105
  257. Global Const WM_SYSCHAR = &H106
  258. Global Const WM_SYSDEADCHAR = &H107
  259. Global Const WM_KEYLAST = &H108
  260. Global Const WM_INITDIALOG = &H110
  261. Global Const WM_COMMAND = &H111
  262. Global Const WM_SYSCOMMAND = &H112
  263. Global Const WM_TIMER = &H113
  264. Global Const WM_HSCROLL = &H114
  265. Global Const WM_VSCROLL = &H115
  266. Global Const WM_INITMENU = &H116
  267. Global Const WM_INITMENUPOPUP = &H117
  268. Global Const WM_MENUSELECT = &H11F
  269. Global Const WM_MENUCHAR = &H120
  270. Global Const WM_ENTERIDLE = &H121
  271. Global Const WM_MOUSEFIRST = &H200
  272. Global Const WM_MOUSEMOVE = &H200
  273. Global Const WM_LBUTTONDOWN = &H201
  274. Global Const WM_LBUTTONUP = &H202
  275. Global Const WM_LBUTTONDBLCLK = &H203
  276. Global Const WM_RBUTTONDOWN = &H204
  277. Global Const WM_RBUTTONUP = &H205
  278. Global Const WM_RBUTTONDBLCLK = &H206
  279. Global Const WM_MBUTTONDOWN = &H207
  280. Global Const WM_MBUTTONUP = &H208
  281. Global Const WM_MBUTTONDBLCLK = &H209
  282. Global Const WM_MOUSELAST = &H209
  283. Global Const WM_PARENTNOTIFY = &H210
  284. Global Const WM_MDICREATE = &H220
  285. Global Const WM_MDIDESTROY = &H221
  286. Global Const WM_MDIACTIVATE = &H222
  287. Global Const WM_MDIRESTORE = &H223
  288. Global Const WM_MDINEXT = &H224
  289. Global Const WM_MDIMAXIMIZE = &H225
  290. Global Const WM_MDITILE = &H226
  291. Global Const WM_MDICASCADE = &H227
  292. Global Const WM_MDIICONARRANGE = &H228
  293. Global Const WM_MDIGETACTIVE = &H229
  294. Global Const WM_MDISETMENU = &H230
  295. Global Const WM_DROPFILES = &H233
  296. Global Const WM_CUT = &H300
  297. Global Const WM_COPY = &H301
  298. Global Const WM_PASTE = &H302
  299. Global Const WM_CLEAR = &H303
  300. Global Const WM_UNDO = &H304
  301. Global Const WM_RENDERFORMAT = &H305
  302. Global Const WM_RENDERALLFORMATS = &H306
  303. Global Const WM_DESTROYCLIPBOARD = &H307
  304. Global Const WM_DRAWCLIPBOARD = &H308
  305. Global Const WM_PAINTCLIPBOARD = &H309
  306. Global Const WM_VSCROLLCLIPBOARD = &H30A
  307. Global Const WM_SIZECLIPBOARD = &H30B
  308. Global Const WM_ASKCBFORMATNAME = &H30C
  309. Global Const WM_CHANGECBCHAIN = &H30D
  310. Global Const WM_HSCROLLCLIPBOARD = &H30E
  311. Global Const WM_QUERYNEWPALETTE = &H30F
  312. Global Const WM_PALETTEISCHANGING = &H310
  313. Global Const WM_PALETTECHANGED = &H311
  314.  
  315. 'WM_NCHITTEST return codes
  316. Global Const HTERROR = -2
  317. Global Const HTTRANSPARENT = -1
  318. Global Const HTNOWHERE = 0
  319. Global Const HTCLIENT = 1
  320. Global Const HTCAPTION = 2
  321. Global Const HTSYSMENU = 3
  322. Global Const HTSIZE = 4
  323. Global Const HTMENU = 5
  324. Global Const HTHSCROLL = 6
  325. Global Const HTVSCROLL = 7
  326. Global Const HTMINBUTTON = 8
  327. Global Const HTMAXBUTTON = 9
  328. Global Const HTLEFT = 10
  329. Global Const HTRIGHT = 11
  330. Global Const HTTOP = 12
  331. Global Const HTTOPLEFT = 13
  332. Global Const HTTOPRIGHT = 14
  333. Global Const HTBOTTOM = 15
  334. Global Const HTBOTTOMLEFT = 16
  335. Global Const HTBOTTOMRIGHT = 17
  336. Global Const HTBORDER = 18
  337. Global Const HTGROWBOX = HTSIZE
  338. Global Const HTREDUCE = HTMINBUTTON
  339. Global Const HTZOOM = HTMAXBUTTON
  340.  
  341.  
  342. 'global structure types
  343. Type PointAPI
  344.     x As Integer
  345.     y As Integer
  346.     End Type
  347. Type MinMaxInfo
  348.     ptReserved As PointAPI
  349.     ptMaxSize As PointAPI
  350.     ptMaxPosition As PointAPI
  351.     ptMinTrackSize As PointAPI
  352.     ptMaxTrackSize As PointAPI
  353.     End Type
  354.  
  355.  
  356.  
  357. 'MsgMore.DLL and Message.VBX should be in your Windows\System directory or in the Path
  358. 'many functions accept one or more command strings (command strings are case-insensitive and the function will return -255 or "Invalid Command" if the command is not recognized)
  359. '(this command string feature means that you don't have to declare any global constants, the DLL/VBX does the work for you)
  360.  
  361. 'NOTE: Functions return a value directly and the parameters must be included in parantheses
  362. '      Subs may return a value in a VB string and the parameters must NOT be included in parantheses
  363.  
  364. 'NOTE: descriptions follow each declaration; however, you should refer to the HLP file for more extensive documentation
  365.  
  366. 'NOTE: Some SUBS require you to set ReturnString$=space$(255) before calling and TrimAtNull(ReturnString$) after calling.
  367. '      This is because VB does not end characters in a NULL (chr$(0)) character.
  368. '      The DLL could write directly to a new VB string avoiding this situational requirement,
  369. '      however, this would prevent Messsage from being used by other Windows programming languages.
  370. '      As is, Message can be safely used from any Windows programming language including:
  371. '      C, C++, PowerPoint, dbFast, dBase for Windows, CA-Realizer, etc. (and, of course, Visual Basic)
  372.  
  373. 'Message functions and subs
  374. Declare Sub MessageDataGet Lib "Message.VBX" (ByVal lParam&, ByVal DataSize%, DataType As Any)
  375.     'used within a Receive event to obtain pointer data
  376. Declare Sub MessageDataSet Lib "Message.VBX" (ByVal lParam&, ByVal DataSize%, DataType As Any)
  377.     'used within a Receive event to change pointer data
  378. Declare Function GetVersionInfo% Lib "MsgMore.DLL" (ByVal Application$, ByVal VersionType$)
  379.     'determines version of assorted files
  380.     'Application$="Windows", "Dos", or "Message"
  381.     'VersionType$=major, minor, or full (full=major*100+minor)
  382. Declare Function GetCPU% Lib "MsgMore.DLL" ()
  383.     'returns 286, 386, or 486 as an integer determining the system CPU (actually, 486 is 486 or better)
  384. Declare Function IsMathPresent% Lib "MsgMore.DLL" ()
  385.     'returns -1 (TRUE) if a Math Coprocessor is present, returns 0 (FALSE) otherwise
  386. Declare Function GetStateOfKey% Lib "MsgMore.DLL" (ByVal KeyName$)
  387.     'returns -1 (TRUE) if the key is depressed; returns 0 (FALSE) otherwise
  388.     'KeyName$="ScrollLock", "NumLock", "CapsLock", "Lshift", "Rshift", "Control", or "Alt"
  389. Declare Function GetFreeMem& Lib "MsgMore.DLL" (ByVal InfoType$)
  390.     'determines assorted memory availabilities
  391.     'InfoType$="system", "gdi", "user", "space", or "contiguous"
  392.     'NOTE:  "system", "gdi", and "user" return a percentage free
  393.     '       ("gdi" is graphics workspace, "user" is module space, and "system" is the lower of these two)
  394.     '       "space" and "contiguous" return the number of bytes (divide by 1024 to obtain kb free)
  395.     '   ret&=GetFreeMem("contiguous") also clears any unused, discarded memory blocks
  396. Declare Function IsModeEnhanced% Lib "MsgMore.DLL" ()
  397.     'returns -1 (TRUE) if in 386 Enhanced Mode, returns 0 (FALSE) if in Standard Mode
  398.  
  399. 'these functions extract the specified byte/word component from a number
  400. 'NOTE: VB integers reserve bit 15 of integers as a sign bit
  401. Declare Function GetHighByte% Lib "MsgMore.DLL" (ByVal OrginalInt%)
  402. Declare Function GetLowByte% Lib "MsgMore.DLL" (ByVal OrginalInt%)
  403. Declare Function GetHighWord& Lib "MsgMore.DLL" (ByVal OrginalLong&)
  404. Declare Function GetLowWord& Lib "MsgMore.DLL" (ByVal OrginalLong&)
  405. Declare Function TestBit% Lib "MsgMore.DLL" (ByVal TestInteger%, ByVal BitToTest%)
  406.     'tests to see if the selected bit (0-15) is set
  407.     'returns -1 (TRUE) if set; returns 0 (FALSE) if not
  408.  
  409. Declare Function GetColorValue% Lib "MsgMore.DLL" (ByVal GetColor$, ByVal RGBcolor&)
  410.     'derives the specified color from an RGB color
  411.     'GetColor$="blue", "red", or "green"
  412. Declare Function WordColor& Lib "MsgMore.DLL" (ByVal ColorName$)
  413.     'allows color selection with words instead of numbers
  414.     'works anywhere that you would normally use QBCOLOR or RGB
  415.     'Basic Color Words (include appropriate quotes around string):
  416.     '   Black,Blue,Green,Cyan,Red,Magenta,DarkYellow,LightGray,DarkGray,BrightBlue,BrightGreen,BrightCyan,BrightRed,BrightMagenta,BrightYellow,BrightWhite
  417.     'These Basic Color Words correspond directly to the 16 QBCOLOR numeric values
  418.     'System Color Words (include appropriate quotes around string):
  419.     '   ActiveBorder,ActiveCaption,AppWorkSpace,BackGround,BtnFace,BtnHighlight,BtnShadow,BtnText,CaptionText,GrayText,Highlight,HighlightText,InactiveBorder,InactiveCaption,InactiveCaptionText,Menu,MenuText,Window,WindowFrame,WindowText
  420.     'These System Color Words are defined for each Windows system's color scheme (they will vary from system to system depending on the user's color scheme configuration)
  421.  
  422.  
  423.  
  424. 'Windows API functions
  425. Declare Function PostMessage% Lib "User" (ByVal hWnd%, ByVal wMsg%, ByVal wParam%, ByVal lParam As Any)
  426. Declare Function SetWindowText% Lib "User" (ByVal hWnd%, ByVal lpString$)
  427. Declare Sub ScreenToClient Lib "User" (ByVal hWnd%, lpPoint As PointAPI)
  428. Declare Function GetMenu% Lib "User" (ByVal hWnd%)
  429. Declare Function GetMenuString% Lib "User" (ByVal hMenu%, ByVal wIDitem%, ByVal lpString$, ByVal lpStringLen%, ByVal wFlag%)
  430. Declare Function GetSystemMenu% Lib "User" (ByVal hWnd%, ByVal fRevert%)
  431.     Global Const MF_BYCOMMAND = &H0
  432.     Global Const MF_BYPOSITION = &H400
  433.     Global Const MF_SEPARATOR = &H800
  434.     Global Const MF_CHECKED = &H8
  435.     Global Const MF_ENABLED = &H0
  436.     Global Const MF_GRAYED = &H1
  437.     Global Const MF_DISABLED = &H2
  438. Declare Function RemoveMenu% Lib "User" (ByVal hMenu%, ByVal nPosition%, ByVal wFlags%)
  439. Declare Function ModifyMenu% Lib "User" (ByVal hMenu%, ByVal nPosition%, ByVal wFlags%, ByVal wIDnewItem%, ByVal lpString As Any)
  440. Declare Function AppendMenu% Lib "User" (ByVal hMenu%, ByVal wFlags%, ByVal wIDnewItem%, ByVal lpNewItem As Any)
  441. Declare Function GetSubMenu% Lib "User" (ByVal hMenu%, ByVal nPos%)
  442. Declare Function TrackPopupMenu% Lib "User" (ByVal hMenu%, ByVal wFlags%, ByVal x%, ByVal y%, ByVal nReserved%, ByVal hWnd%, ByVal lpReserved&)
  443. Declare Function GetMenuState% Lib "User" (ByVal hMenu%, ByVal wID%, ByVal wFlags%)
  444.  
  445. Sub SysMenuAppendLine (TheForm As Form, UniqueID%)
  446.     HsysMenu% = GetSystemMenu(TheForm.hWnd, 0)
  447.     SysAppend% = AppendMenu(HsysMenu%, MF_SEPARATOR, UniqueID%, "")
  448. End Sub
  449.  
  450. Sub SysMenuAppendMsg (TheForm As Form, MenuWord$, UniqueID%)
  451.     HsysMenu% = GetSystemMenu(TheForm.hWnd, 0)
  452.     SysAppend% = AppendMenu(HsysMenu%, MF_BYCOMMAND, UniqueID%, MenuWord$)
  453. End Sub
  454.  
  455. Sub SysMenuDisable (TheForm As Form, UniqueID%)
  456.     HsysMenu% = GetSystemMenu(TheForm.hWnd, 0)
  457.     ReturnString$ = Space$(255)
  458.     ret% = GetMenuString(HsysMenu%, UniqueID%, ReturnString$, 255, MF_BYCOMMAND)
  459.     ReturnString$ = TrimAtNull(ReturnString$)
  460.     ret% = ModifyMenu(HsysMenu%, UniqueID%, MF_BYCOMMAND & MF_GRAYED, UniqueID%, ReturnString$)
  461. End Sub
  462.  
  463. Sub SysMenuEnable (TheForm As Form, UniqueID%)
  464.     HsysMenu% = GetSystemMenu(TheForm.hWnd, 0)
  465.     ReturnString$ = Space$(255)
  466.     ret% = GetMenuString(HsysMenu%, UniqueID%, ReturnString$, 255, MF_BYCOMMAND)
  467.     ReturnString$ = TrimAtNull(ReturnString$)
  468.     ret% = ModifyMenu(HsysMenu%, UniqueID%, MF_BYCOMMAND & MF_ENABLED, UniqueID%, ReturnString$)
  469. End Sub
  470.  
  471. Sub SysMenuItemModify (TheForm As Form, MenuWord$, MenuID%, MenuFlags%)
  472.     HsysMenu% = GetSystemMenu(TheForm.hWnd, 0)
  473.     modify% = ModifyMenu(HsysMenu%, MenuID%, MenuFlags%, MenuID%, MenuWord$)
  474. End Sub
  475.  
  476. Sub SysMenuRemoveCmd (TheForm As Form, MenuCmd%)
  477.     HsysMenu% = GetSystemMenu(TheForm.hWnd, 0)
  478.     remove% = RemoveMenu(HsysMenu%, MenuCmd%, MF_BYCOMMAND)
  479. End Sub
  480.  
  481. Sub SysMenuRemoveItem (TheForm As Form, MenuPosition%)
  482.     HsysMenu% = GetSystemMenu(TheForm.hWnd, 0)
  483.     remove% = RemoveMenu(HsysMenu%, MenuPosition%, MF_BYPOSITION)
  484. End Sub
  485.  
  486.